﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// 同群体过滤器 - 只保留属于同一群体的邻居对象
/// 过滤掉其他群体的个体，只保留当前群体内的个体
/// 可在编辑器中创建：Create > Flock > Filter > Same Flock
/// </summary>
[CreateAssetMenu(menuName = "Flock/Filter/Same Flock")]
public class SameFlockFilter : ContextFilter
{
    /// <summary>
    /// 根据群体归属过滤邻居对象列表
    /// 只保留与当前个体属于同一群体的对象
    /// </summary>
    /// <param name="agent">当前个体</param>
    /// <param name="original">原始的邻居对象列表</param>
    /// <returns>过滤后的邻居对象列表（只包含同群体个体）</returns>
    public override List<Transform> Filter(FlockAgent agent, List<Transform> original)
    {
        List<Transform> filtered = new List<Transform>();
        
        // 遍历所有邻居对象
        foreach (Transform item in original)
        {
            // 获取邻居对象的FlockAgent组件
            FlockAgent itemAgent = item.GetComponent<FlockAgent>();
            
            // 检查是否属于同一群体
            if (itemAgent != null && itemAgent.AgentFlock == agent.AgentFlock)
            {
                filtered.Add(item);
            }
        }
        
        return filtered;
    }
}
